package com.xuelang.pipeline.domain.task.service;

import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.task.dto.TaskQuery;
import com.xuelang.pipeline.domain.task.Task;

import java.util.List;

/**
 * 流水线任务领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface TaskDomainService {
    /**
     * 获取流水线任务列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param taskQuery
     * @return
     */
    PageRecord<Task> pageList(long currentPage, long pageSize, TaskQuery taskQuery);
    /**
     * 获取流水线任务列表，有过滤条件
     *
     * @param taskQuery
     * @return
     */
    List<Task> list(TaskQuery taskQuery);

    /**
     * 新增流水线任务
     *
     * @param task
     * @return
     */
    Boolean save(Task task);

    /**
     * 更新流水线任务
     *
     * @param task
     * @return
     */
    Boolean update(Task task);
    /**
     * 删除流水线任务
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);

    /**
     * 判断流水线任务编码是否存在
     *
     * @param pipelineCode
     * @param taskCode
     * @return
     */
    Boolean existsCode(String pipelineCode, String taskCode);

    /**
     * 判断流水线任务名称是否存在
     *
     * @param pipelineCode
     * @param taskCode
     * @param taskName
     * @return
     */
    Boolean existsName(String pipelineCode, String taskCode, String taskName);
    /**
     * 查询流水线任务
     *
     * @param uuid
     * @return
     */
    Task query(String uuid);

    /**
     * 通过流水线编码删除关联流水线任务
     *
     * @param pipelineCode
     * @return
     */
    Boolean deleteByPipelineCode(String pipelineCode);
    /**
     * 通过流水线模板uuid批量新增流水线任务
     *
     * @param pipelineTemplateUuid
     * @param toPipelineCode
     * @param userId
     * @return
     */
    Boolean batchSaveByPipelineTemplateUuid(String pipelineTemplateUuid, String toPipelineCode, String userId);
}
